8x8 Font Replacement

Font replacement is the recommended starting point in translating a Japanese ROM. Firstly, you need to decide which Japanese character will become which English character. The best way to do this is to find the 'name your character' screen in the game and use the layout of characters so that when you replace characters they appear correctly in this screen (ie. in alphabetical order). The following example, from the Dragon Quest series, will show how to do this:

Step 1: Find the 'Name Select' Screen
This should not be too hard. When you do, save it as a picture (if you emu does not support this, run it in a DOS window and use the cut/copy/paste icons (or try the 'print screen' button)).

Step 2: Convert the First Character
Now you need some knowledge of binary/hex/decimal numbers. If you don't, tough, this translation work is not for you! You must convert each row of the character from a binary to a hexadecimal number. Assume each pixel represents a bit, the left one being the most significant (=128). If the pixel is part of the character (white) give it a value 1, otherwize it is 0. This will eventually give you the 8 hexadecimal numbers/bytes on the right of the picture.

Step 3: Hunt for the Character
Now you know the bytes of the character, you can hunt for it in the rom. This is not as easy as it sounds. If the font uses one bitmap for the characters, then the 8 bytes should be found together. If more than one bitmap is used, there may be extra bytes between each of your bytes. This is the case here, where you must search for 20 ff fc ff etc... The extra bytes may not be 'ff' they could well be '00'. The font may be somehow encrypted or packed, in which case finding it this way will not work (unusual)! If you find several occurances, try the next step for each one until the character changes.

Step 4: Patching the Character
Now you know where the character is in the rom, you can change these bytes to alter the character. In this case it has been changed to 'A'. Once you have done this, load the rom and the character should have changed. If not, you patched the wrong location, try step 3 again until it works. If you still don't get it right, maybe try the next character, that may work...

Step 5: Completing the Font
Now you have converted one character, you should be able to do all of them! The boring way is to repeat the same process for each character, but it is much better to try and figure out where the next character will be without converting it to hexadecimal numbers. Usually, it will be after the one you just did, so try patching 'B' onto the next few bytes. If you are really clever, you can write a program to load the rom and patch all the characters for you (get my 8x8 Font collection for font data).